package com.yty.newconsult.service;

import cn.hutool.json.JSONUtil;

import com.yty.newconsult.common.ChannelManager;
import io.netty.bootstrap.Bootstrap;
import io.netty.channel.Channel;
import io.netty.channel.ChannelFuture;
import io.netty.channel.ChannelInitializer;
import io.netty.channel.EventLoopGroup;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.SocketChannel;
import io.netty.channel.socket.nio.NioSocketChannel;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

@Slf4j
@Service
public class ChannelService {

    @Resource
    private ChannelManager channelManager;
    //连接到服务器
//    public void connectToServer(String id) throws InterruptedException {
//        EventLoopGroup group=new NioEventLoopGroup();
//        try{
//            //启动实例是bootstrap
//            Bootstrap b=new Bootstrap();
//            b.group(group)
//                    //连接类型是NioSocketChannel.class
//                    .channel(NioSocketChannel.class)
//                    .handler(new ChannelInitializer<SocketChannel>() {
//                        protected void initChannel(SocketChannel sc) throws Exception {
////                            sc.pipeline().addLast(new StringLengthFieldDecoder());
//                            sc.pipeline().addLast(new MessageCodec());
//                            sc.pipeline().addLast(new TcpClientHandle());
//                        }
//                    });
//            LoginMessage msg=new LoginMessage(id,"123456");
//            ChannelFuture future=b.connect("127.0.0.1",8000).sync();
//            if(future.isSuccess()){
//                Channel ch=future.channel();
//                ch.writeAndFlush(msg).sync();
//                log.debug("连接成功");
//                //把通道加入管理器
//                channelManager.addChannel(id,ch);
//                future.channel().closeFuture().sync();
//            }else{
//                log.debug("连接失败");
//            }
//
//        } finally {
//            group.shutdownGracefully();
//        }
//    }
//    public void sendSingleMessage(String id,String content,String targetId){
//        Channel ch = channelManager.getChannel(id);
//        if(ch!=null){
//            SingleMessage msg=new SingleMessage(targetId,content);
//            String s= JSONUtil.toJsonStr(msg);
//            //异步处理
//            ch.writeAndFlush(s).addListener(future -> {
//                if(future.isSuccess()){
//                    log.debug("发送成功");
//                }else{
//                    log.debug("发送失败");
//                }
//            });
//        }else{
//            log.debug("通道不存在");
//        }
//    }
//    public void createGroup(String id, String groupName, List<String> users){
//        Channel ch = channelManager.getChannel(id);
//        users.add(id);
//        if(ch!=null){
//            CreateGroupMessage msg=new CreateGroupMessage(users,groupName);
//            String s= JSONUtil.toJsonStr(msg);
//            //异步处理
//            ch.writeAndFlush(s).addListener(future -> {
//                if(future.isSuccess()){
//                    log.debug("发送成功");
//                }else{
//                    log.debug("发送失败");
//               }
//           });
//       }
//   }
//   public void sendGroupMessage(String id,String content,String groupId){
//        Channel ch = channelManager.getChannel(id);
//        if(ch!=null){
//            GroupMessage msg=new GroupMessage(groupId,content);
//            //异步处理
//            ch.writeAndFlush(msg).addListener(future -> {
//                if(future.isSuccess()){
//                    log.debug("发送成功");
//                }else{
//                    log.debug("发送失败");
//                }
//            });
//        }else{
//            log.debug("未登录");
//        }
//    }
}
